package com.design.SingletonMode;

/**
 * 单例模式
 * 说明：
 *      一个类只能被创建一个实例对象，这样的类被称为单例类，这种设计模式就是单例模式
 * 为什么要用：
 *      多线程中保证线程安全
 *      可以表示全局唯一
 * 注意点：
 *      构造器必须是私有的（private），防止被外部new，这样单例就不存在了
 *      单例是否需要延迟加载（也就是：运行时创建还是使用时创建）
 *      考虑线程的安全问题
 *      获取实例的时候是否需要加锁
 */
public class Main {
    public static void main(String[] args) {
        // 饿汉
        Mode1 instance1 = Mode1.getInstance();
        // 懒汉
        Mode2 instance2 = Mode2.getInstance();
        // 懒汉 双重检测 推荐 ****
        Mode3 instance3 = Mode3.getInstance();
        // 饿汉-静态内部类 推荐 *****
        Mode4 instance4 = Mode4.getInstance();
    }
}
